import 'dart:convert';
import 'package:get/get.dart';
import '../entities/entities.dart';
import '../services/storage.dart';
import '../values/storage.dart';

class UserStore extends GetxController {
  static UserStore get to => Get.find();

  String username = '';
  String pwd = '';
  ErdsUserLoginInfo? userInfo;
  String token = '';

  @override
  void onInit() {
    super.onInit();
    token = StorageService.to.getString(StorageKey.erdsToken);
    username = StorageService.to.getString(StorageKey.username);
    pwd = StorageService.to.getString(StorageKey.password);
    var profileOffline = StorageService.to.getString(StorageKey.erdsUserInfo);
    if (profileOffline.isNotEmpty) {
      userInfo = ErdsUserLoginInfo.fromJson(jsonDecode(profileOffline));
    }
  }

  /// 保存token
  Future<void> setToken(String value) async {
    await StorageService.to.setString(StorageKey.erdsToken, value);
    token = value;
  }

  /// 保存 用户名
  Future<void> setUsername(String value) async {
    await StorageService.to.setString(StorageKey.username, value);
    username = value;
  }

  /// 保存密码
  Future<void> setPwd(String value) async {
    await StorageService.to.setString(StorageKey.password, value);
    pwd = value;
  }

  // 保存 用户信息
  Future<void> saveUserInfo(ErdsUserLoginInfo profile) async {
    await StorageService.to.setString(
      StorageKey.erdsUserInfo,
      jsonEncode(profile),
    );
    userInfo = profile;
  }

  // final _obj = ''.obs;
  // set obj(value) => this._obj.value = value;
  // get obj => this._obj.value;
}

// class UserStore extends GetxController {
//   static UserStore get to => Get.find();

//   // 是否登录
//   final _isLogin = false.obs;
//   // 令牌 token
//   String token = '';
//   // 用户 profile
//   final _profile = UserLoginResponseEntity().obs;

//   bool get isLogin => _isLogin.value;
//   UserLoginResponseEntity get profile => _profile.value;
//   bool get hasToken => token.isNotEmpty;

//   @override
//   void onInit() {
//     super.onInit();
//     token = StorageService.to.getString(StorageKey.userToken);
//     var profileOffline = StorageService.to.getString(StorageKey.profile);
//     if (profileOffline.isNotEmpty) {
//       _profile(UserLoginResponseEntity.fromJson(jsonDecode(profileOffline)));
//     }
//   }

//   // 保存 token
//   Future<void> setToken(String value) async {
//     await StorageService.to.setString(StorageKey.userToken, value);
//     token = value;
//   }

//   // 获取 profile
//   Future<void> getProfile() async {
//     // if (token.isEmpty) return;
//     // var result = await UserAPI.profile();
//     // _profile(result);
//     // _isLogin.value = true;
//     // StorageService.to.setString(StorageKey.profile, jsonEncode(result));
//   }

//   // 保存 profile
//   Future<void> saveProfile(UserLoginResponseEntity profile) async {
//     _isLogin.value = true;
//     StorageService.to.setString(StorageKey.profile, jsonEncode(profile));
//   }

//   // 注销
//   Future<void> onLogout() async {
//     // if (_isLogin.value) await UserAPI.logout();
//     // await StorageService.to.remove(StorageKey.userToken);
//     // _isLogin.value = false;
//     // token = '';
//   }
// }
